package com.merry.aop.pointcut;

import org.springframework.aop.ClassFilter;
import org.springframework.aop.MethodMatcher;
import org.springframework.aop.TruePointcut;

/**
 * 一个切入点的匹配规则，里面持有了两个对象 {@link ClassFilter}、{@link MethodMatcher}
 * 没什么好说的。它的子类都是按照不同的规则，对类和方法进行匹配。
 *
 * @author Rod Johnson
 * @see ClassFilter
 * @see MethodMatcher
 * @see org.springframework.aop.support.Pointcuts
 * @see org.springframework.aop.support.ClassFilters
 * @see org.springframework.aop.support.MethodMatchers
 */
public interface Pointcut {

    /**
     * 返回当前的 Pointcut 的 ClassFilter 对象，不为空
     */
    ClassFilter getClassFilter();

    /**
     * 返回当前的 Pointcut 的 MethodMatcher 对象，不为空
     */
    MethodMatcher getMethodMatcher();


    /**
     * Canonical Pointcut instance that always matches.
     */
    Pointcut TRUE = TruePointcut.INSTANCE;

}
